package ve.ucv.patologiaocular.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import ve.ucv.patologiaocular.domain.MuestraLesionLocalizacion;

public class MuestraLesionLocalizacionDAOImpl implements MuestraLesionLocalizacionDAO {
	private EntityManagerFactory entityManagerFactory;
	private EntityManager entityManager;

	public MuestraLesionLocalizacionDAOImpl() {
		this.entityManagerFactory = Persistence
				.createEntityManagerFactory("patologiads");
		this.entityManager = entityManagerFactory.createEntityManager();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<MuestraLesionLocalizacion> listarMuestrasLesionLocal() {
		Query q = entityManager.createQuery("select b.nombre from MuestraLesionLocal a, Muestra b where a.muestraId=b.id");
		return q.getResultList();

	}

	@Override
	public void guardar(MuestraLesionLocalizacion muestraLesionLocal) {
		entityManager.getTransaction().begin();
		entityManager.persist(muestraLesionLocal);
		entityManager.flush();
		entityManager.getTransaction().commit();
	}
	
	@Override
	public void editar(MuestraLesionLocalizacion muestraLesionLocal) {
		entityManager.getTransaction().begin();
		entityManager.merge(muestraLesionLocal);
		entityManager.flush();
		entityManager.getTransaction().commit();
	}

	@Override
	public void borrar(MuestraLesionLocalizacion muestraLesionLocal) {
		entityManager.getTransaction().begin();
		entityManager.remove(muestraLesionLocal);
		entityManager.flush();
		entityManager.getTransaction().commit();
	}

	public EntityManager getEntityManager() {
		return entityManager;
	}

	@Override
	public MuestraLesionLocalizacion buscar(Integer id) {
		return entityManager.find(MuestraLesionLocalizacion.class, id);

	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<MuestraLesionLocalizacion> buscarMuestraLesionLocalPorMuestra(Integer muestra) {
		Query q = entityManager.createQuery("select a from MuestraLesionLocalizacion a where a.muestraId= "+muestra);
		return q.getResultList();
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<MuestraLesionLocalizacion> buscarMuestraLesionLocalPorLocalizacion(Integer localizacion) {
		Query q = entityManager.createQuery("select a from MuestraLesionLocalizacion a where a.localizacionId= "+localizacion);
		return q.getResultList();
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<MuestraLesionLocalizacion> buscarMuestraLesionLocalPorSitioDeLesion(Integer sitioDeLesion) {
		Query q = entityManager.createQuery("select a from MuestraLesionLocalizacion a where a.sitioDeLesionId= "+sitioDeLesion);
		return q.getResultList();
	}
	
}
